pytest, xdist, coverage
という話がPyPI (warehouse) の開発blogで紹介されていた。
実際にやってみると、coverageが1プロセス分しか取得できない。
マルチプロセスで起動した先でもカバレッジ収集を開始するには明示的に設定が必要
parallel = true を指定
COVERAGE_PROCESS_START 環境変数に設定ファイルを明示して参照できるようにする
coverage.process_startup() をサブプロセス側で実行
code:sitecustomize.py
try:
import coverage
coverage.process_startup()
except ImportError:
pass
sys.path に設定されたPYTHONPATHにあっても、親プロセスも含めて一度も読み込まれていない。
なにかがおかしい。
うまくいっていない報告がいくつか見つかった
pytest-cov を使う(生coverageではなく)
pytest-cov を使うことにした
インストール時に coverage-enable-subprocess.pth ファイルを作成
code:coverage-enable-subprocess.pth
try:
import coverage
except (ImportError, OSError):
pass
else:
coverage.process_startup()
自分でpthファイルを作成せずに代わりに作成してくれる便利パッケージでした
結局、おとなしく coverage-enable-subprocess をインストールして完了とした。
(後で書く)完成形の設定ひととおり